/**
  ******************************************************************************
    * @project 便携式测控实验站上位机
  * @file    CSInfoParser.h
  * @author  hhy/wattercutter
  * @date    2020/1/13
  * @brief   解析 从串口数据包中提取CSInfoStructure

    * @UpdateTime
            2021/1/13 hhy/wattercutter
            2021/1/14 hhy/wattercutter 解析测试
  ******************************************************************************
*/

#ifndef CSINFOPARSER_H
#define CSINFOPARSER_H

#include <iostream>

/**
    @part 通信数据结构
*/

/* 加速度信息结构体-XYZ三分量 */
typedef struct CSModuleInfo_ACC{
    float _acc_X;
    float _acc_Y;
    float _acc_Z;
}CSInfo_Acc;

/* 经纬度信息结构体-经纬两分量 */
typedef struct CSmouduleInfo_LL{
    float _latitude;
    float _longitude;
}CSInfo_LL;

/* 测控站信息结构体 */
typedef struct CSInfoStrcutre CSInfoS;
typedef struct CSInfoStrcutre{
    /* 核心温度 MCU温度 */
    float _temp_O_MCU;
    /* 气温 */
    float _temp_env;
    /* 气压 */
    float _gp;
    /* 加速度 */
    CSInfo_Acc _acc;
    /* 经纬度 */
    CSInfo_LL _ll;
}* ptrCSInfo;


/**
    @part 通信协议
    @Protocol
    ------------------------------------------------------------
         头       |            信息              |      尾
    ------------------------------------------------------------
    0x80|0x81|0x82|         CSInfoStrcutre       |0x82|0x81|0x80
    ------------------------------------------------------------
        3Byte     |            32Byte            |     3Byte
    ------------------------------------------------------------
*/

#define HEAD1 0x80
#define HEAD2 0x81
#define HEAD3 0x82

#define TAIL1 0x82
#define TAIL2 0x81
#define TAIL3 0x80

#define INFOSIZE 32


bool CSInfo_GetInfoArrayInpackages(uint8_t* infoArray,uint8_t* packages,int sizepackages);
void CSInfo_InfoArray2CSInfoS(uint8_t* const infoArray,ptrCSInfo infoStrc);


#endif // CSINFOPARSER_H
